/*******************************************************************************
* COPYRIGHT LIPUJUN TECH CO.,LTD
********************************************************************************
* 文件名称:  task.c
* 功能描述:
* 使用说明:  无
* 文件作者:  LIPUJUN
* 编写日期:  2018/11/28
* 修改历史:
* 修改版本  修改日期       修改人   修改内容
  01a       2018/11/28       李普军   创建
*******************************************************************************/

/******************************* 包含文件声明 ********************************/
#include "task.h"
#include "link.h"
#include "msg_core.h"
#include "user_core.h"
#include "unify_core.h"
#include "VAC_video.h"
/******************************* 局部宏定义 **********************************/

/******************************* 全局变量定义/初始化 *************************/
TASK_PAR_T g_stTaskList[] =
{
    {MQTT_LINK_RS_TASK_INDEX,      NULL,   comunicationLink_task,   NULL,   "mqttLinkRS_task" },
    {MQTT_DATA_PROC_TASK_INDEX,    NULL,   mqttRecvDataProc_task,   NULL,   "mqttRecvDataProc_task"},
    {MQTT_REPORT_TASK_INDEX,       NULL,   mqttMsgReport_task,      NULL,   "mqttMsgReport_task"   },
    {DATA_FILE_SYNC_TASK_INDEX,    NULL,   dataFileSync_task,       NULL,   "dataFileSync_task"    },
    {VER_UPDATE_TASK_INDEX,        NULL,   verUpdate_task,          NULL,   "verUpdate_task"       },
    {UNIFYDATAS_TASK_INDEX,        NULL,   unifyDatas_task,         NULL,   "unifyDatas_task"      }, 
    {VIDEO_SERVER_TASK_INDEX,      NULL,   videoDataServer_task,    NULL,   "videoServer_task"     },
    {VIDEO_MSG_CLIENT_TASK_INDEX,  NULL,   videoMSGClient_task,     NULL,   "videoMSGClient_task"  },
    {TASK_END_INDEX, NULL, NULL, NULL, NULL}
};

/******************************* 局部常数和类型定义 **************************/
INT32 creatTask (void)
{
    INT32 ret = 0;
    UINT16 id = 0;
    pthread_t tid[20];

    for (id = 0; id < TASK_END_INDEX; id++)
    {
        if (TASK_END_INDEX == g_stTaskList[id].index)
        {
            break;
        }
        ret = pthread_create (&tid[id], (const pthread_attr_t *)g_stTaskList[id].attr, (void *)g_stTaskList[id].fun, g_stTaskList[id].arg);
        if (0 != ret)
        {
            Error ("Create pthread (%s) Fail!", g_stTaskList[id].taskDesc);
            return ERROR;
        }
	INFO ("Create pthread (%s) OK. ", g_stTaskList[id].taskDesc); 
    }

    return OK;
}

/******************************* 源文件结束 **********************************/
